<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.集合介绍
        //声明一个set
        // let s = new Set();
        // let s2 = new Set(['1','2','3','3','5','5']); //自动去重
        // console.log(s, typeof s);
        // console.log(s2);

        // // 元素个数
        // console.log(s2.size);
        // // 添加新元素
        // s2.add('a');
        // console.log(s2);
        // // 删除元素
        // s2.delete('a');
        // console.log(s2);
        // // 检测 存在为true
        // console.log(s2.has('1'));
        // // 清空
        // s2.clear();
        // console.log(s2);

        // for (let v of s2) {
        //     console.log(v);
        // }

        // 2.集合实践
        let arr = [1,2,3,4,5,4,3,2,1];

        // 1.数组去重
        // let result = [...new Set(arr)];
        // console.log(result);  //[1, 2, 3, 4, 5]
        // 2.交集
        let arr2 = [4,5,6,5,6];

        // let result = [...new Set(arr)].filter(item=>{
        //     let s2 = new Set(arr2);// 4 5 6
        //     if(s2.has(item)){
        //         return true;
        //     }else{
        //         return false;
        //     }
        // })
        // console.log(result);

        // 简化
        // let result = [...new Set(arr)].filter(item=>new Set(arr2).has(item));
        // console.log(result);

        // 3.并集
        // let union = new Set([...arr,...arr2]);
        // console.log(union);//1 2 3 4 5 6

        // 4.差集  就是交集的取反
        let result = [...new Set(arr)].filter(item=>!new Set(arr2).has(item));
        console.log(result);
    </script>
</body>

</html>